###12.01_Scanner的概述和方法介绍
A:Scannner的概述
	JDK原文: 一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
B:Scanner的构造方法原理:
	Scanner(InputStream source)
	System类下有一个静态的字段:
			public static final InputStream in; 键盘录入标准输入流
			
C:一般方法:
	hasNextXxx() :判断是否还有下一个输入项, 其中Xxx可以使Int,Double等, 如果需要判断是否包含一下个字符串, 可以省略Xxx;
	nextXxx()	:获得下一个输入项. Xxx的含义如上, 默认情况下, Scanner使用空格, 回车等作为分隔符;
	
D:常用此方法:
	public String nextLine()	:获取一个String类型的值;-->强烈推荐使用
	public int nextInt()		:获取一个int类型的值;

E:注意:
	*上面2个方法别混着用,会出乱子的! 解决方法:
		a.重新创建新的键盘录入对象;
		b.把所有的数据都先按字符串获取(即只用nextLine), 然后要啥再转换即可(推荐);
		
F:使用示例:
	Scanner sc = new Scanner(System.in); //扫描对象绑住键盘录入
	String str = sc.nextLine();		  //在键盘敲下空格或回车之前,此处一直阻塞
	System.out.println(str);			  //回显输入
	

		
###12.02_String类的概述
A.查看JDK后可以看到这几句话:
	a.字符串字面值"abc"也可以看成是一个字符串对象;
	b.字符串是常量, 一旦被赋值, 就不能被改变;
	
###12.03_String类的方法
A.常见构造方法
	public String() :空构造
	public String(byte[] bytes) :把字节数组转成字符串
	public String(char[] value) :把字符数组转成字符串
	public String(char[] value, int index, int count) :把字节数组的一部分转成字符串
	public String(String original) :把字符串常量转成字符串
	
B.常见判断方法
	boolean equals(Object obj) 			:比较字符串的内容是否相同, 区分大小写(重写了父类方法)
	boolean equalsIgnoreCase(String str)	:比较字符串的内容是否相等, 忽略大小写
	boolean contains(String str) 			:判断大字符串中是否包含小字符串
	boolean startsWith(String str)			:判断字符串是否以某个指定字符串开头
	boolean endsWith(String str) 			:判断字符串是否以某个指定的字符串结尾
	boolean isEmpty() 					:判断字符串是否为空

C.常见获取方法
	int length():获取字符串的长度
	char charAt(int index)				:获取指定索引位置的字符
	int indexOf(int ch)					:返回指定字符在此字符串中第一次出现处的索引
	int indexOf(String str)				:返回指定字符串在此字符串中第一次出现的索引
	int indexOf(int ch, int fromIndex)	:返回指定字符在此字符串中从指定位置后第一次出现处的索引
	int lastIndexOf(... ...)				:完全参照indexOf, 只不过是从后面算起
	String substring(int start)			:从指定位置开始截取字符串,默认到末尾
	String substring(int start, int end)	:从指定位置开始到指定位置结束截取字符串.(左闭右开)
	
D.常见转换方法
	String toLowerCase()					:把字符串转成小写
	String toUpperCase()					:把字符串转成大写
	String concat(String str)				:把字符串拼接(concat只能拼接字符串,是"+"的弱化版)
	byte[] getBytes()					:把字符串转换为字节数组
	char[] toCharArray()					:把字符串转化为字符数组
	static String valueOf(char[] chs)		:把字符数组转成字符串
	static String valueOf(int i)			:把int类型的数据转成字符串
		注意: String类的valueOf方法可以把任意类型数据转成字符串!

E.常见其他实用方法
  a.替换
		String replace(char oldseg, char newseg);
		String replace(String oldseg, String newseg);
  b.修剪两端空格
		String trim();
  c.按字典顺序比较两个字符串,不是按ascii,是按字典!
		int compareTo(String str);
		int compareToIgnoreCase(String str);
  e.正在表达式相关:
		boolean matches(String regex);
		String replaceAll(String regex, String newseg);
		public String[] split(String regex);

F.关于==和equals的面试题
	1.判断定义为String类型的s1和s2是否相等
		String s1 = "abc";				//"abc"在编译期就被钦定放到常量池了,相当于执行前就已经放内存一样,叫预置
		String s2 = "abc";
		System.out.println(s1 == s2);		//true,常量池中
		System.out.println(s1.equals(s2)); //true
	2.下面这句话在内存中创建了几个对象?
		String s1 = new String("abc");	//2个,1个放在常量池(编译期),1个放在堆(运行期),后者是前者的复制
	3.判断定义为String类型的s1和s2是否相等
		String s1 = new String("abc");
		String s2 = "abc";
		System.out.println(s1 == s2);		//false
		System.out.println(s1.equals(s2)); //true
	4.判断定义为String类型的s1和s2是否相等
		String s1 = "a"+"b"+"c";			//编译期被直接优化为"abc"
		String s2 = "abc";
		System.out.println(s1 == s2);		//true
		System.out.println(s1.equals(s2));  //true
	5.判断定义为String类型的s1和s2是否相等
		String s1 = "ab";
		String s2 = "abc";
		String s3 = s1+"c";
		System.out.println(s3 == s2);		//false
		System.out.println(s3.equals(s2)); //true
		
		
		